#include<bits/stdc++.h>
using namespace std;
inline int read()
{
	int res=0,f=1;char c=getchar();
	while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
	while(c>='0'&&c<='9'){res=(res<<1)+(res<<3)+(c^48);c=getchar();}
	return res*f;
}
void write(int x)
{
	if(x<0)x=-x,putchar('-');
	if(x>9)write(x/10);
	putchar(x%10+'0');
}
int n,m;
int u[114514],v[114514],w[114514];
int cnt;
int main()
{
	freopen("road.in","r",stdin);
	freopen("road.out","w",stdout);
	n=read();
	if(!n)
	{
		puts("2 1");
		puts("1 114 0");
		return 0;
	}
	if(n==1)
	{
		puts("2 2");
		puts("1 114 0");
		puts("1 114 1");
		return 0; 
	}
	for(int i=0;i<=20;i++) if((1<<i)<=n) m=i;
	for(int i=1;i<m;i++) 
	{
		u[++cnt]=i,v[cnt]=i+1,w[cnt]=0;
		u[++cnt]=i,v[cnt]=i+1,w[cnt]=(1<<(i-1));
	}
	u[++cnt]=m,v[cnt]=114,w[cnt]=0;
	u[++cnt]=m,v[cnt]=114,w[cnt]=(1<<(m-1));
	int now=(1<<m);
	for(int i=0;i<m;i++)
		if(n&(1<<i)) u[++cnt]=i+1,v[cnt]=114,w[cnt]=now,now+=(1<<i);
	u[++cnt]=1,v[cnt]=114,w[cnt]=n;
	write(m+1),putchar(' '),write(cnt),puts("");
	for(int i=1;i<=cnt;i++) write(u[i]),putchar(' '),write(v[i]),putchar(' '),write(w[i]),puts("");
	return 0;
}
